// 首先引入createStore   第二个参数是用来调用中间件
//引入combineReducers合并reduces
import { createStore, applyMiddleware, combineReducers } from 'redux'

//关联reducer
import countReduce from './reducers/countReducer'
//movie关联reducers
import movieReducer from "./reducers/movieReducer"

//引入异步处理中间件
//当我们要进行异步action，action是一个函数，我们dispacth的函数就会提交到中间件
//中间件帮我们执行函数，一般函数中会有一个dispatch再次派发到store中
import thunk from 'redux-thunk'

//使用redux提供的combineReducers方法,合并多个reducer
//现在store中有两个数据了,将来可能会更多,所以用对象的方式来保存
const allReducer = combineReducers( {
    count: countReduce,
    movie: movieReducer
})
//用对象的形式保存的化,数据结构发生改变,那么Count中数据的解构方式需要更改
//下方store第一个参数也要修改为合并后的reducer

// console.log('store调用了');
// 创建store
//提供对应的reducer    第二个参数是用来调用中间件
const store = createStore(allReducer, applyMiddleware(thunk))

//暴漏共享仓库
export default store;













//1.这里有一个Count组件,我们需要点击对应的button按钮改变初始值,并共享给Movie组件
//首先给每一个按钮绑定点击事件,然后定义事件函数.

//2.组件准备好之后我们就需要用到store了
// 2.1在src下创建store文件夹-创建store.js文件,这个就是我们的公共仓库了,数据都从这里共享,
// 2.2下载redux 的包

//3.下载完成后编辑store.js文件,首先引入createStore

//4.创建store  (是将state、action、reducer联系在一起的对象)

//5.创建store对象后 需要使用redux提供的createStore方法 并且传入reducer和当前的store做关联

//6.在store中新建文件夹reducers -->新建countReducer.js文件
//render:用于初始化状态、加工状态,根据旧的state和action， 产生新的state的纯函数

//7.关联上reducer,并接收参数用来传输数据,引入并关联

//8.将来我们需要从store中共享数据,所以需要暴露出去

//9.咱们现在就可以进行关联了.在Count中引入store进行关联测试

//10.关联成功了,我们的去Count中测试一下传递数据
    ////在虚拟dom中获取store中的值方法是{store.getState()},得到一个字符串,我们需要解构出来
